<?php

namespace app\common\service;


class PackCompressService {



    function index( $txtPdPath ,   $doublelayerPdPath ,$xmlPath ,$qzh,$year,$dh ,$douDir ){


        $filesToZip = array($doublelayerPdPath, $txtPdPath, $xmlPath);
        $pdfpackagingPath = "$douDir/{$qzh}/{$year}";
        $pdfpackagingPath = $this->cateFile($pdfpackagingPath);
        $zip_name = $pdfpackagingPath . "{$dh}.zip";

        $status = $this->filePackagingZip($filesToZip, $zip_name);


        return  $status ;

    }
    
    function cateFile($pdPath )
    {
        $pdPath = config("path") . "pdfpackaging/{$pdPath}/";
        // 检查目录是否存在
        if (!file_exists($pdPath)) {
            // 目录不存在，尝试创建
            mkdir($pdPath, 0777, true);
        }

        return $pdPath;
    }

    function filePackagingZip($filesToZip, $outputZipFile)
    {

// 定义输出的 ZIP 文件路径
// 创建 ZipArchive 对象
        $zip = new \ZipArchive();

// 打开或创建 ZIP 文件
        if ($zip->open($outputZipFile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) !== true) {
            die('无法创建 ZIP 文件！');
            return false;
        }

// 遍历文件列表并将文件添加到 ZIP 中
        foreach ($filesToZip as $file) {
            // 检查文件是否存在
            if (file_exists($file)) {
                // 添加文件到 ZIP
                $zip->addFile($file, basename($file)); // 第二个参数是存储在 ZIP 中的文件名
            } else {
                echo "警告：文件 {$file} 不存在，已跳过。\n";
                return false;
            }
        }

// 关闭 ZIP 文件
        if ($zip->close()) {
            echo "ZIP 文件 {$outputZipFile} 创建成功！\n";
            return true;
        } else {
            echo "ZIP 文件创建失败！\n";
            return false;
        }


    }

}